// 测试 String.prototype 上与正则相关的函数

const props = {
    name: 'Tom',
    location: 'kaifamiao.com'
}

const str = 'Hello ${name} , welcome to ${location}' ;

const re = /\${[A-Za-z]+}/;

// 通过 RegExp.prototype.test 判断 str 是否匹配于 re 
console.log( re.test( str ) );
// 通过 RegExp.prototype.exec 获取 str 匹配于 re 的结果
console.log( re.exec( str ) );

console.log( '- '.repeat( 20 ) );

// 通过 String.prototype.match 获取 str 中匹配于 re 的结果
console.log( str.match( re ) );
// 通过 String.prototype.matchAll 获取 str 中匹配于 指定正则表达式 的所有结果
// 注意: matchAll 参数对应的正则表达式必须是 全局搜索模式
// 注意: matchAll 返回 迭代器 ，因此需要通过迭代器来处理匹配结果
const iterator = str.matchAll( /\${[A-Za-z]+}/g );

let x ;
do {
    x = iterator.next();
    console.log( x );
} while( !x.done );

console.log( '- - - - - - - - - - - - - - - - - - - - - -');

let s = str ;
let array ;
while( ( array = s.match( re ) ) ){
    console.log( array );
    let key = array[0];
    let a = key.match( /[A-Za-z]+/ );
    if( a ) {
        let pn = a[0] ;
        let value = props[ pn ];
        console.log( key , value );
        s = s.replace( key , value );
    }
}

console.log( s );

// console.log( '${name}'.match( /[a-z]+/ )[0] );